/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package myftp.app.renderer;

import java.awt.Color;
import java.awt.Component;
import javax.swing.JLabel;
import javax.swing.JTable;
import javax.swing.SwingConstants;
import javax.swing.table.TableCellRenderer;

/**
 *
 * @author CAVARLE Glenn, LUCAS Stéphane
 * Renderer du tableau des fichiers
 */
public class ExplorerFileTableRenderer implements TableCellRenderer {

    /**
     * Texte de la case
     * @var label
     */
    private JLabel label = new JLabel();

    public ExplorerFileTableRenderer() {
    }

    /**
     * Gestion alignement, taille et couleur des cases
     */
    public Component getTableCellRendererComponent(
            JTable table, Object value, boolean isSelected, boolean hasFocus, int row, int column) {

        /* Gestion de l'alignements des labels */
        /* Noms de fichiers à gauche */
        label.setHorizontalAlignment(SwingConstants.LEFT);
        if (column == 1) {
            /* Taille des fichiers centrée */
            label.setHorizontalAlignment(SwingConstants.CENTER);
        } else {
            if (column == 2 || column == 3) {
                /* Date des fichiers a droite */
                label.setHorizontalAlignment(SwingConstants.RIGHT);
            }
        }

        /*Taille des colonnes*/
        table.getColumnModel().getColumn(2).setPreferredWidth(170);

        /*Couleur des lignes*/
        label.setOpaque(true);
        if ((row % 2) == 0) {
            /* Lignes impaires en grise */
            label.setBackground(Color.LIGHT_GRAY);
        } else {
            /* Lignes paires en blanc */
            label.setBackground(Color.WHITE);
        }

        if (isSelected) {
            /* Ligne séléctionnée en jaune */
            label.setBackground(Color.yellow);
        }


        /*Couleur des noms de fichiers*/
        if (column == 0) {
            /* Noms de fichiers en bleu */
            label.setForeground(Color.blue);
        } else {
            /* Le reste en noir */
            label.setForeground(Color.BLACK);
        }

        /* Affecte le texte voulu au label de la case */
        label.setText(value.toString());
        return label;
    }
}
